#pragma once

#include<deque>
template<class T, class Container = std::deque<T>>
class queue
{
private:
	Container con;
public:
	void push(const T& x)
	{
		con.push_back(x);
	}

	void pop()
	{
		con.pop_front();
	}

	bool empty()
	{
		return con.empty();
	}

	size_t size()
	{
		return con.size();
	}

	const T& front()
	{
		return con.front();
	}

	const T& back()
	{
		return con.back();
	}
};